/**
 * author:李硕 2307124008
 * date:2025-04-21`
 *
 * 声明该类所属的包为 demo5
 */
package demo5;

/**
 * 导入 java.util 包下的 Date 类，用于处理日期和时间
 */
import java.util.Date;

/**
 * 测试类，用于测试食堂管理系统中各个类的功能
 */
public class Test {
    /**
     * 程序的入口方法，Java 虚拟机从该方法开始执行程序
     *
     * @param args 命令行参数，是一个字符串数组
     */
    public static void main(String[] args) {
        // 创建食堂分类实例，传入分类 ID、分类名称和分类描述
        CanteenCategory category = new CanteenCategory(1, "学生食堂", "主要服务于学生群体");
        // 输出提示信息，表示食堂分类信息添加完成
        System.out.println("食堂分类信息添加后：");
        // 调用 CanteenCategory 类的 getCategoryInfo 方法，输出食堂分类信息
        System.out.println(category.getCategoryInfo());

        // 修改食堂分类信息，传入新的分类名称、分类描述和是否启用状态
        category.modifyCategory("教职工食堂", "主要服务于教职工群体", false);
        // 输出提示信息，表示食堂分类信息已修改
        System.out.println("\n食堂分类信息修改后：");
        // 再次调用 getCategoryInfo 方法，输出修改后的食堂分类信息
        System.out.println(category.getCategoryInfo());

        // 创建食堂实例，传入食堂 ID、位置、名称、容量、商户数量和食堂分类
        Canteen canteen = new Canteen(1, "学校南区", "南区食堂", 500, 20, category);
        // 输出提示信息，表示食堂信息添加完成
        System.out.println("\n食堂信息添加后：");
        // 调用 Canteen 类的 getCanteenInfo 方法，输出食堂信息
        System.out.println(canteen.getCanteenInfo());

        // 修改食堂信息，传入新的位置、名称、容量、商户数量和食堂分类
        canteen.modifyCanteenInfo("学校北区", "北区食堂", 600, 25, category);
        // 输出提示信息，表示食堂信息已修改
        System.out.println("\n食堂信息修改后：");
        // 再次调用 getCanteenInfo 方法，输出修改后的食堂信息
        System.out.println(canteen.getCanteenInfo());

        // 更改食堂使用状态，传入 false 表示食堂不活跃
        canteen.changeCanteenStatus(false);
        // 输出提示信息，表示食堂使用状态已更改
        System.out.println("\n食堂使用状态更改后：");
        // 再次调用 getCanteenInfo 方法，输出更改状态后的食堂信息
        System.out.println(canteen.getCanteenInfo());

        // 创建商家实例，传入商家 ID、名称、地址、负责人、营业执照号和联系电话
        Merchant merchant = new Merchant(1, "美味餐厅", "城市 A", "张三", "123456789", "13800138000");
        // 调用 DailySellingDish 类的 getDishInfo 方法，输出每日售卖菜品信息

        // 输出提示信息，表示商家基本信息添加完成
        System.out.println("\n商家基本信息添加后：");
        System.out.println(merchant.getMerchantInfo());

        // 修改商家基本信息
        merchant.modifyMerchantInfo("佳肴餐厅", "城市 B", "李四", "987654321", "13900139000");
        System.out.println("\n商家基本信息修改后：");
        System.out.println(merchant.getMerchantInfo());

        // 创建菜品管理实例
        DishManagement dish = new DishManagement(1, 1, "宫保鸡丁", "经典川菜", "鸡肉、花生米等", 25.0);
        // 输出提示信息，表示菜品添加完成
        System.out.println("\n菜品添加后：");
        // 调用 DishManagement 类的 getDishInfo 方法，输出菜品信息
        System.out.println(dish.getDishInfo());

        // 修改菜品信息，传入新的菜品名称、描述、食材和价格
        dish.modifyDish("鱼香肉丝", "经典川菜", "猪肉、木耳等", 22.0);
        // 输出提示信息，表示菜品已修改
        System.out.println("\n菜品修改后：");
        // 再次调用 getDishInfo 方法，输出修改后的菜品信息
        System.out.println(dish.getDishInfo());

        // 创建每日售卖菜品实例，传入菜品 ID、名称、描述、价格、库存和日期
        DailySellingDish dailyDish = new DailySellingDish(1, "鱼香肉丝", "经典川菜", 22.0, 10, new Date());
        // 输出提示信息，表示每日售卖菜品已发布
        System.out.println("\n每日售卖菜品发布后：");
        // 调用 DailySellingDish 类的 getDishInfo 方法，输出每日售卖菜品信息
        System.out.println(dailyDish.getDishInfo());
    }
}
